2022-06-07 20:29:33 +03:00
/* SPDX-License-Identifier: GPL-2.0-only */
2016-08-11 23:15:18 +03:00
/*
* Freescale Memory Controller kernel module
*
* Support Power - based SoCs including MPC85xx , MPC86xx , MPC83xx and
2018-12-19 13:43:23 +03:00
* ARM - based Layerscape SoCs including LS2xxx and LS1021A . Originally
* split out from mpc85xx_edac EDAC driver .
2016-08-11 23:15:18 +03:00
*
* Author : Dave Jiang < djiang @ mvista . com >
*
2022-06-07 20:29:33 +03:00
* 2006 - 2007 ( c ) MontaVista Software , Inc .
2016-08-11 23:15:18 +03:00
*/
# ifndef _FSL_DDR_EDAC_H_
# define _FSL_DDR_EDAC_H_
2016-08-10 00:55:41 +03:00
# define fsl_mc_printk(mci, level, fmt, arg...) \
2016-08-11 23:15:18 +03:00
edac_mc_chipset_printk ( mci , level , " FSL_DDR " , fmt , # # arg )
/*
* DRAM error defines
*/
/* DDR_SDRAM_CFG */
2016-08-10 00:55:41 +03:00
# define FSL_MC_DDR_SDRAM_CFG 0x0110
# define FSL_MC_CS_BNDS_0 0x0000
# define FSL_MC_CS_BNDS_OFS 0x0008
2016-08-11 23:15:18 +03:00
2016-08-10 00:55:41 +03:00
# define FSL_MC_DATA_ERR_INJECT_HI 0x0e00
# define FSL_MC_DATA_ERR_INJECT_LO 0x0e04
# define FSL_MC_ECC_ERR_INJECT 0x0e08
# define FSL_MC_CAPTURE_DATA_HI 0x0e20
# define FSL_MC_CAPTURE_DATA_LO 0x0e24
# define FSL_MC_CAPTURE_ECC 0x0e28
# define FSL_MC_ERR_DETECT 0x0e40
# define FSL_MC_ERR_DISABLE 0x0e44
# define FSL_MC_ERR_INT_EN 0x0e48
# define FSL_MC_CAPTURE_ATRIBUTES 0x0e4c
# define FSL_MC_CAPTURE_ADDRESS 0x0e50
# define FSL_MC_CAPTURE_EXT_ADDRESS 0x0e54
# define FSL_MC_ERR_SBE 0x0e58
2016-08-11 23:15:18 +03:00
# define DSC_MEM_EN 0x80000000
# define DSC_ECC_EN 0x20000000
# define DSC_RD_EN 0x10000000
# define DSC_DBW_MASK 0x00180000
# define DSC_DBW_32 0x00080000
# define DSC_DBW_64 0x00000000
# define DSC_SDTYPE_MASK 0x07000000
# define DSC_X32_EN 0x00000020
/* Err_Int_En */
# define DDR_EIE_MSEE 0x1 /* memory select */
# define DDR_EIE_SBEE 0x4 /* single-bit ECC error */
# define DDR_EIE_MBEE 0x8 /* multi-bit ECC error */
/* Err_Detect */
# define DDR_EDE_MSE 0x1 /* memory select */
# define DDR_EDE_SBE 0x4 /* single-bit ECC error */
# define DDR_EDE_MBE 0x8 /* multi-bit ECC error */
# define DDR_EDE_MME 0x80000000 /* multiple memory errors */
/* Err_Disable */
# define DDR_EDI_MSED 0x1 /* memory select disable */
# define DDR_EDI_SBED 0x4 /* single-bit ECC error disable */
# define DDR_EDI_MBED 0x8 /* multi-bit ECC error disable */
2016-08-10 00:55:41 +03:00
struct fsl_mc_pdata {
2016-08-11 23:15:18 +03:00
char * name ;
int edac_idx ;
void __iomem * mc_vbase ;
int irq ;
} ;
2016-08-10 00:55:41 +03:00
int fsl_mc_err_probe ( struct platform_device * op ) ;
2023-10-13 13:04:23 +03:00
void fsl_mc_err_remove ( struct platform_device * op ) ;
2016-08-11 23:15:18 +03:00
# endif