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