cpu-info.c 1.4 KB

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