ARM: uniphier: simplify SoC ID get function
[project/bcm63xx/u-boot.git] / arch / arm / mach-uniphier / cpu-info.c
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("CPU: ");
24
25 switch (id) {
26 case UNIPHIER_SLD3_ID:
27 puts("sLD3 (MN2WS0220)");
28 required_model = 2;
29 break;
30 case UNIPHIER_LD4_ID:
31 puts("LD4 (MN2WS0250)");
32 required_rev = 2;
33 break;
34 case UNIPHIER_PRO4_ID:
35 puts("Pro4 (MN2WS0230)");
36 break;
37 case UNIPHIER_SLD8_ID:
38 puts("sLD8 (MN2WS0270)");
39 break;
40 case UNIPHIER_PRO5_ID:
41 puts("Pro5 (MN2WS0300)");
42 break;
43 case UNIPHIER_PXS2_ID:
44 puts("PXs2 (MN2WS0310)");
45 break;
46 case UNIPHIER_LD6B_ID:
47 puts("LD6b (MN2WS0320)");
48 break;
49 case UNIPHIER_LD11_ID:
50 puts("LD11 (SC1405AP1)");
51 break;
52 case UNIPHIER_LD20_ID:
53 puts("LD20 (SC1401AJ1)");
54 break;
55 default:
56 printf("Unknown Processor ID (0x%x)\n", id);
57 return -ENOTSUPP;
58 }
59
60 printf(" model %d (revision %d)\n", model, rev);
61
62 if (model < required_model) {
63 printf("Only model %d or newer is supported.\n",
64 required_model);
65 return -ENOTSUPP;
66 } else if (rev < required_rev) {
67 printf("Only revision %d or newer is supported.\n",
68 required_rev);
69 return -ENOTSUPP;
70 }
71
72 return 0;
73 }