1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright (C) Marvell International Ltd. and its affiliates
4  */
5 
6 #ifndef __DDR3_AXP_CONFIG_H
7 #define __DDR3_AXP_CONFIG_H
8 
9 /*
10  * DDR3_LOG_LEVEL Information
11  *
12  * Level 0: Provides an error code in a case of failure, RL, WL errors
13  *          and other algorithm failure
14  * Level 1: Provides the D-Unit setup (SPD/Static configuration)
15  * Level 2: Provides the windows margin as a results of DQS centeralization
16  * Level 3: Provides the windows margin of each DQ as a results of DQS
17  *          centeralization
18  */
19 #ifdef CONFIG_DDR_LOG_LEVEL
20 #define	DDR3_LOG_LEVEL	CONFIG_DDR_LOG_LEVEL
21 #else
22 #define	DDR3_LOG_LEVEL	0
23 #endif
24 
25 #define DDR3_PBS        1
26 
27 /* This flag allows the execution of SW WL/RL upon HW failure */
28 #define DDR3_RUN_SW_WHEN_HW_FAIL    1
29 
30 /*
31  * General Configurations
32  *
33  * The following parameters are required for proper setup:
34  *
35  * DDR_TARGET_FABRIC   - Set desired fabric configuration
36  *                       (for sample@Reset fabfreq parameter)
37  * DRAM_ECC            - Set ECC support 1/0
38  * BUS_WIDTH           - 64/32 bit
39  * CONFIG_SPD_EEPROM   - Enables auto detection of DIMMs and their timing values
40  * DQS_CLK_ALIGNED     - Set this if CLK and DQS signals are aligned on board
41  * MIXED_DIMM_STATIC   - Mixed DIMM + On board devices support (ODT registers
42  *                       values are taken statically)
43  * DDR3_TRAINING_DEBUG - Debug prints of internal code
44  */
45 #define DDR_TARGET_FABRIC			5
46 /* Only enable ECC if the board selects it */
47 #ifdef CONFIG_BOARD_ECC_SUPPORT
48 #define DRAM_ECC				1
49 #else
50 #define DRAM_ECC				0
51 #endif
52 
53 #ifdef CONFIG_DDR_32BIT
54 #define BUS_WIDTH                               32
55 #else
56 #define BUS_WIDTH				64
57 #endif
58 
59 #undef DQS_CLK_ALIGNED
60 #undef MIXED_DIMM_STATIC
61 #define DDR3_TRAINING_DEBUG			0
62 #define REG_DIMM_SKIP_WL			0
63 
64 /* Marvell boards specific configurations */
65 #if defined(DB_78X60_PCAC)
66 #undef CONFIG_SPD_EEPROM
67 #define STATIC_TRAINING
68 #endif
69 
70 #if defined(DB_78X60_AMC)
71 #undef CONFIG_SPD_EEPROM
72 #undef  DRAM_ECC
73 #define DRAM_ECC				1
74 #endif
75 
76 #ifdef CONFIG_SPD_EEPROM
77 /*
78  * DIMM support parameters:
79  * DRAM_2T - Set Desired 2T Mode - 0 - 1T, 0x1 - 2T, 0x2 - 3T
80  * DIMM_CS_BITMAP - bitmap representing the optional CS in DIMMs
81  * (0xF=CS0+CS1+CS2+CS3, 0xC=CS2+CS3...)
82  */
83 #define DRAM_2T					0x0
84 #define DIMM_CS_BITMAP				0xF
85 #define DUNIT_SPD
86 #endif
87 
88 #ifdef DRAM_ECC
89 /*
90  * ECC support parameters:
91  *
92  * U_BOOT_START_ADDR, U_BOOT_SCRUB_SIZE - relevant when using ECC and need
93  * to configure the scrubbing area
94  */
95 #define TRAINING_SIZE				0x20000
96 #define U_BOOT_START_ADDR			0
97 #define U_BOOT_SCRUB_SIZE			0x1000000 /* TRAINING_SIZE */
98 #endif
99 
100 /*
101  * Registered DIMM Support - In case registered DIMM is attached,
102  * please supply the following values:
103  * (see JEDEC - JESD82-29A "Definition of the SSTE32882 Registering Clock
104  * Driver with Parity and Quad Chip
105  * Selects for DDR3/DDR3L/DDR3U RDIMM 1.5 V/1.35 V/1.25 V Applications")
106  * RC0: Global Features Control Word
107  * RC1: Clock Driver Enable Control Word
108  * RC2: Timing Control Word
109  * RC3-RC5 - taken from SPD
110  * RC8: Additional IBT Setting Control Word
111  * RC9: Power Saving Settings Control Word
112  * RC10: Encoding for RDIMM Operating Speed
113  * RC11: Operating Voltage VDD and VREFCA Control Word
114  */
115 #define RDIMM_RC0				0
116 #define RDIMM_RC1				0
117 #define RDIMM_RC2				0
118 #define RDIMM_RC8				0
119 #define RDIMM_RC9				0
120 #define RDIMM_RC10				0x2
121 #define RDIMM_RC11				0x0
122 
123 #if defined(MIXED_DIMM_STATIC) || !defined(CONFIG_SPD_EEPROM)
124 #define DUNIT_STATIC
125 #endif
126 
127 #if defined(MIXED_DIMM_STATIC) || defined(CONFIG_SPD_EEPROM)
128 /*
129  * This flag allows the user to change the dram refresh cycle in ps,
130  * only in case of SPD or MIX DIMM topology
131  */
132 #define TREFI_USER_EN
133 
134 #ifdef TREFI_USER_EN
135 #define TREFI_USER				3900000
136 #endif
137 #endif
138 
139 #ifdef CONFIG_SPD_EEPROM
140 /*
141  * AUTO_DETECTION_SUPPORT - relevant ONLY for Marvell DB boards.
142  * Enables I2C auto detection different options
143  */
144 #if defined(CONFIG_DB_88F78X60) || defined(CONFIG_DB_88F78X60_REV2) || \
145     defined(CONFIG_DB_784MP_GP)
146 #define AUTO_DETECTION_SUPPORT
147 #endif
148 #endif
149 
150 #endif /* __DDR3_AXP_CONFIG_H */
151