1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * Copyright 2013 - 2015 Freescale Semiconductor, Inc. 4 */ 5 6 #ifndef _FSL_ERRATA_H 7 #define _FSL_ERRATA_H 8 9 #include <common.h> 10 #if defined(CONFIG_PPC) 11 #include <asm/processor.h> 12 #elif defined(CONFIG_ARCH_LS1021A) 13 #include <asm/arch-ls102xa/immap_ls102xa.h> 14 #elif defined(CONFIG_FSL_LAYERSCAPE) 15 #include <asm/arch/soc.h> 16 #endif 17 18 19 #ifdef CONFIG_SYS_FSL_ERRATUM_A006379 20 static inline bool has_erratum_a006379(void) 21 { 22 u32 svr = get_svr(); 23 if (((SVR_SOC_VER(svr) == SVR_T4240) && SVR_MAJ(svr) <= 1) || 24 ((SVR_SOC_VER(svr) == SVR_T4160) && SVR_MAJ(svr) <= 1) || 25 ((SVR_SOC_VER(svr) == SVR_T4080) && SVR_MAJ(svr) <= 1) || 26 ((SVR_SOC_VER(svr) == SVR_B4860) && SVR_MAJ(svr) <= 2) || 27 ((SVR_SOC_VER(svr) == SVR_B4420) && SVR_MAJ(svr) <= 2) || 28 ((SVR_SOC_VER(svr) == SVR_T2080) && SVR_MAJ(svr) <= 1) || 29 ((SVR_SOC_VER(svr) == SVR_T2081) && SVR_MAJ(svr) <= 1)) 30 return true; 31 32 return false; 33 } 34 #endif 35 36 #ifdef CONFIG_SYS_FSL_ERRATUM_A007186 37 static inline bool has_erratum_a007186(void) 38 { 39 u32 svr = get_svr(); 40 u32 soc = SVR_SOC_VER(svr); 41 42 switch (soc) { 43 case SVR_T4240: 44 return IS_SVR_REV(svr, 2, 0); 45 case SVR_T4160: 46 return IS_SVR_REV(svr, 2, 0); 47 case SVR_B4860: 48 return IS_SVR_REV(svr, 2, 0); 49 case SVR_B4420: 50 return IS_SVR_REV(svr, 2, 0); 51 case SVR_T2081: 52 case SVR_T2080: 53 return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 1, 1); 54 } 55 56 return false; 57 } 58 #endif 59 60 #ifdef CONFIG_SYS_FSL_ERRATUM_A008378 61 static inline bool has_erratum_a008378(void) 62 { 63 u32 svr = get_svr(); 64 u32 soc = SVR_SOC_VER(svr); 65 66 67 switch (soc) { 68 #ifdef CONFIG_ARCH_LS1021A 69 case SOC_VER_LS1020: 70 case SOC_VER_LS1021: 71 case SOC_VER_LS1022: 72 case SOC_VER_SLS1020: 73 return IS_SVR_REV(svr, 1, 0); 74 #endif 75 #ifdef CONFIG_PPC 76 case SVR_T1023: 77 case SVR_T1024: 78 return IS_SVR_REV(svr, 1, 0); 79 case SVR_T1020: 80 case SVR_T1022: 81 case SVR_T1040: 82 case SVR_T1042: 83 return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 1, 1); 84 #endif 85 default: 86 return false; 87 } 88 } 89 #endif 90 91 #endif /* _FSL_ERRATA_H */ 92