fsl_errata.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * Copyright 2013 Freescale Semiconductor, Inc.
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. */
  6. #ifndef _ASM_FSL_ERRATA_H
  7. #define _ASM_FSL_ERRATA_H
  8. #include <common.h>
  9. #include <asm/processor.h>
  10. #ifdef CONFIG_SYS_FSL_ERRATUM_A006379
  11. static inline bool has_erratum_a006379(void)
  12. {
  13. u32 svr = get_svr();
  14. if (((SVR_SOC_VER(svr) == SVR_T4240) && SVR_MAJ(svr) <= 1) ||
  15. ((SVR_SOC_VER(svr) == SVR_T4160) && SVR_MAJ(svr) <= 1) ||
  16. ((SVR_SOC_VER(svr) == SVR_T4080) && SVR_MAJ(svr) <= 1) ||
  17. ((SVR_SOC_VER(svr) == SVR_B4860) && SVR_MAJ(svr) <= 2) ||
  18. ((SVR_SOC_VER(svr) == SVR_B4420) && SVR_MAJ(svr) <= 2) ||
  19. ((SVR_SOC_VER(svr) == SVR_T2080) && SVR_MAJ(svr) <= 1) ||
  20. ((SVR_SOC_VER(svr) == SVR_T2081) && SVR_MAJ(svr) <= 1))
  21. return true;
  22. return false;
  23. }
  24. #endif
  25. #ifdef CONFIG_SYS_FSL_ERRATUM_A006261
  26. static inline bool has_erratum_a006261(void)
  27. {
  28. u32 svr = get_svr();
  29. u32 soc = SVR_SOC_VER(svr);
  30. switch (soc) {
  31. case SVR_P1010:
  32. return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
  33. case SVR_P2041:
  34. case SVR_P2040:
  35. return IS_SVR_REV(svr, 1, 0) ||
  36. IS_SVR_REV(svr, 1, 1) || IS_SVR_REV(svr, 2, 1);
  37. case SVR_P3041:
  38. return IS_SVR_REV(svr, 1, 0) ||
  39. IS_SVR_REV(svr, 1, 1) ||
  40. IS_SVR_REV(svr, 2, 0) || IS_SVR_REV(svr, 2, 1);
  41. case SVR_P5010:
  42. case SVR_P5020:
  43. case SVR_P5021:
  44. return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
  45. case SVR_T4240:
  46. case SVR_T4160:
  47. case SVR_T4080:
  48. return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
  49. case SVR_T1040:
  50. return IS_SVR_REV(svr, 1, 0);
  51. case SVR_T2080:
  52. case SVR_T2081:
  53. return IS_SVR_REV(svr, 1, 0);
  54. case SVR_P5040:
  55. return IS_SVR_REV(svr, 1, 0);
  56. }
  57. return false;
  58. }
  59. #endif
  60. static inline bool has_erratum_a007075(void)
  61. {
  62. u32 svr = get_svr();
  63. u32 soc = SVR_SOC_VER(svr);
  64. switch (soc) {
  65. case SVR_B4860:
  66. case SVR_B4420:
  67. return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
  68. case SVR_P1010:
  69. return IS_SVR_REV(svr, 1, 0);
  70. case SVR_P4080:
  71. return IS_SVR_REV(svr, 2, 0) || IS_SVR_REV(svr, 3, 0);
  72. }
  73. return false;
  74. }
  75. #endif