cpu-info.c 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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 <init.h>
  8. #include <stdio.h>
  9. #include <linux/errno.h>
  10. #include <linux/io.h>
  11. #include <linux/printk.h>
  12. #include "base-address.h"
  13. #include "soc-info.h"
  14. int print_cpuinfo(void)
  15. {
  16. unsigned int id, model, rev, required_model = 1, required_rev = 1;
  17. int ret;
  18. ret = uniphier_base_address_init();
  19. if (ret)
  20. return ret;
  21. id = uniphier_get_soc_id();
  22. model = uniphier_get_soc_model();
  23. rev = uniphier_get_soc_revision();
  24. puts("SoC: ");
  25. switch (id) {
  26. case UNIPHIER_LD4_ID:
  27. puts("LD4");
  28. required_rev = 2;
  29. break;
  30. case UNIPHIER_PRO4_ID:
  31. puts("Pro4");
  32. break;
  33. case UNIPHIER_SLD8_ID:
  34. puts("sLD8");
  35. break;
  36. case UNIPHIER_PRO5_ID:
  37. puts("Pro5");
  38. break;
  39. case UNIPHIER_PXS2_ID:
  40. puts("PXs2");
  41. break;
  42. case UNIPHIER_LD6B_ID:
  43. puts("LD6b");
  44. break;
  45. case UNIPHIER_LD11_ID:
  46. puts("LD11");
  47. break;
  48. case UNIPHIER_LD20_ID:
  49. puts("LD20");
  50. break;
  51. case UNIPHIER_PXS3_ID:
  52. puts("PXs3");
  53. break;
  54. default:
  55. printf("Unknown Processor ID (0x%x)\n", id);
  56. return -ENOTSUPP;
  57. }
  58. printf(" (model %d, revision %d)\n", model, rev);
  59. if (model < required_model) {
  60. pr_err("Only model %d or newer is supported.\n",
  61. required_model);
  62. return -ENOTSUPP;
  63. } else if (rev < required_rev) {
  64. pr_err("Only revision %d or newer is supported.\n",
  65. required_rev);
  66. return -ENOTSUPP;
  67. }
  68. return 0;
  69. }