Home | History | Annotate | Download | only in include
      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