1 /* 2 * Copyright (C) 2013-2014 Panasonic Corporation 3 * Copyright (C) 2015-2017 Socionext Inc. 4 * Author: Masahiro Yamada <yamada.masahiro@socionext.com> 5 * 6 * SPDX-License-Identifier: GPL-2.0+ 7 */ 8 9 #include <common.h> 10 #include <linux/errno.h> 11 #include <linux/io.h> 12 13 #include "soc-info.h" 14 15 int print_cpuinfo(void) 16 { 17 unsigned int id, model, rev, required_model = 1, required_rev = 1; 18 19 id = uniphier_get_soc_id(); 20 model = uniphier_get_soc_model(); 21 rev = uniphier_get_soc_revision(); 22 23 puts("SoC: "); 24 25 switch (id) { 26 case UNIPHIER_SLD3_ID: 27 puts("sLD3"); 28 required_model = 2; 29 break; 30 case UNIPHIER_LD4_ID: 31 puts("LD4"); 32 required_rev = 2; 33 break; 34 case UNIPHIER_PRO4_ID: 35 puts("Pro4"); 36 break; 37 case UNIPHIER_SLD8_ID: 38 puts("sLD8"); 39 break; 40 case UNIPHIER_PRO5_ID: 41 puts("Pro5"); 42 break; 43 case UNIPHIER_PXS2_ID: 44 puts("PXs2"); 45 break; 46 case UNIPHIER_LD6B_ID: 47 puts("LD6b"); 48 break; 49 case UNIPHIER_LD11_ID: 50 puts("LD11"); 51 break; 52 case UNIPHIER_LD20_ID: 53 puts("LD20"); 54 break; 55 case UNIPHIER_PXS3_ID: 56 puts("PXs3"); 57 break; 58 default: 59 printf("Unknown Processor ID (0x%x)\n", id); 60 return -ENOTSUPP; 61 } 62 63 printf(" (model %d, revision %d)\n", model, rev); 64 65 if (model < required_model) { 66 printf("Only model %d or newer is supported.\n", 67 required_model); 68 return -ENOTSUPP; 69 } else if (rev < required_rev) { 70 printf("Only revision %d or newer is supported.\n", 71 required_rev); 72 return -ENOTSUPP; 73 } 74 75 return 0; 76 } 77