tizen 2.4 release
[kernel/u-boot-tm1.git] / arch / arm / cpu / arm926ejs / sc8800g / sdram_prod.c
1 /******************************************************************************
2  ** File Name:      sdram_prod.c                                              *
3  ** Author:                                                                   *
4  ** DATE:           04/18/2008                                                *
5  ** Copyright:      2008 Spreadtrum, Incoporated. All Rights Reserved.        *
6  ** Description:    This file defines the product configurable parameters of  * 
7  **                 SDRAM module                                              *
8  **                                                                           *
9  ******************************************************************************
10
11  ******************************************************************************
12  **                        Edit History                                       *
13  ** ------------------------------------------------------------------------- *
14  ** DATE           NAME             DESCRIPTION                               *
15  ** 04/18/2008                          Create.                                           *
16  ******************************************************************************/
17
18 /**---------------------------------------------------------------------------*
19  **                         Dependencies                                      *
20  **---------------------------------------------------------------------------*/ 
21 #include <asm/arch/sci_types.h>
22 #include <asm/arch/sdram_cfg.h>
23
24 /**---------------------------------------------------------------------------*
25  **                         Debugging Flag                                    *
26  **---------------------------------------------------------------------------*/
27  
28
29
30 /**---------------------------------------------------------------------------*
31  **                         Compiler Flag                                     *
32  **---------------------------------------------------------------------------*/
33 #ifdef   __cplusplus
34     extern   "C" 
35     {
36 #endif
37
38 /*********************************************************************************/
39 //             Macro Definition
40 /*********************************************************************************/
41 // Feature
42 #if defined (BB_DRAM_TYPE_32MB_16BIT)
43 #define SDRAM_ROW_MODE          ROW_MODE_13
44 #define SDRAM_COL_MODE          COL_MODE_9
45 #define SDRAM_DATA_WIDTH        DATA_WIDTH_16
46 #define SDRAM_SIZE                      SDRAM_32M
47
48 #elif defined(BB_DRAM_TYPE_32MB_32BIT_13R)
49 #define SDRAM_ROW_MODE          ROW_MODE_13             
50 #define SDRAM_COL_MODE          COL_MODE_8              
51 #define SDRAM_DATA_WIDTH        DATA_WIDTH_32
52 #define SDRAM_SIZE                      SDRAM_32M
53
54 #elif defined(BB_DRAM_TYPE_32MB_32BIT_12R)
55 #define SDRAM_ROW_MODE          ROW_MODE_12             
56 #define SDRAM_COL_MODE          COL_MODE_9              
57 #define SDRAM_DATA_WIDTH        DATA_WIDTH_32
58 #define SDRAM_SIZE                      SDRAM_32M
59
60 #elif defined(BB_DRAM_TYPE_64MB_16BIT)
61 #define SDRAM_ROW_MODE          ROW_MODE_13
62 #define SDRAM_COL_MODE          COL_MODE_10
63 #define SDRAM_DATA_WIDTH        DATA_WIDTH_16
64 #define SDRAM_SIZE                      SDRAM_64M
65
66 #elif defined(BB_DRAM_TYPE_64MB_32BIT)
67 #define SDRAM_ROW_MODE          ROW_MODE_13
68 #define SDRAM_COL_MODE          COL_MODE_9
69 #define SDRAM_DATA_WIDTH        DATA_WIDTH_32
70 #define SDRAM_SIZE                      SDRAM_64M
71
72 #elif defined(BB_DRAM_TYPE_128MB_16BIT)
73 #define SDRAM_ROW_MODE          ROW_MODE_14
74 #define SDRAM_COL_MODE          COL_MODE_10
75 #define SDRAM_DATA_WIDTH        DATA_WIDTH_16
76 #define SDRAM_SIZE                      SDRAM_128M
77
78 #elif defined(BB_DRAM_TYPE_128MB_32BIT)
79 #define SDRAM_ROW_MODE          ROW_MODE_13
80 #define SDRAM_COL_MODE          COL_MODE_10
81 #define SDRAM_DATA_WIDTH        DATA_WIDTH_32
82 #define SDRAM_SIZE                      SDRAM_128M
83
84 #elif defined(BB_DRAM_TYPE_256MB_32BIT)
85 #define SDRAM_ROW_MODE          ROW_MODE_14
86 #define SDRAM_COL_MODE          COL_MODE_10
87 #define SDRAM_DATA_WIDTH        DATA_WIDTH_32
88 #define SDRAM_SIZE                      SDRAM_256M
89
90 #else
91 #error do not select size and bit width for SDRAM
92 #endif
93
94 #define BK_MODE                 BK_MODE_4
95
96 #if defined(PLATFORM_SC8800H)
97 #define BURST_LEN               BURST_LEN_8
98 #elif defined(PLATFORM_SC6800H)
99 #define BURST_LEN               BURST_LEN_2
100 #elif defined(PLATFORM_SC8800G)
101 #define BURST_LEN               BURST_LEN_2
102 #else
103 #error do not select burst len for SDRAM
104 #endif
105
106 #define CAS_LATENCY     CAS_LATENCY_3
107
108 // Include Product config
109 #include "sdram_cfg.c"
110
111 /**---------------------------------------------------------------------------*
112  **                         Local Variables                                   *
113  **---------------------------------------------------------------------------*/
114 /*******************************************************************************/
115 //   sdram_parameters[] is used to config SDRAM controller according to variable
116 //sdram. The unit is ns. The end of array is marked with 0xffffffff at the last element. 
117 /*******************************************************************************/
118 LOCAL CONST SDRAM_TIMING_PARA_T s_sdram_timing_param =
119 //  ms    ns   ns    ns            ns    ns       ns    ns  clk   clk
120 //  tREF, tRP, tRCD, tWR/tRDL/tDPL,tRFC,tXSR,     tRAS,tRRD,tMRD, tWTR(wtr is only for ddr)
121     {64,   30,  30,   20,          110, 150,      60,  20,  2,    2   };
122
123 /*******************************************************************************/
124 //   sdram_cofig_info is used to config sdram controller when to init sdram
125 /*******************************************************************************/
126 LOCAL CONST SDRAM_CFG_INFO_T s_sdram_config_info =
127 {
128         BK_MODE,
129         SDRAM_ROW_MODE,
130         SDRAM_COL_MODE,
131         SDRAM_DATA_WIDTH,              
132         BURST_LEN,
133         CAS_LATENCY,
134         SDRAM_EXT_MODE_VALUE,
135         SDR_SDRAM
136 };
137
138 /**---------------------------------------------------------------------------*
139  **                     Public Function Prototypes                            *
140  **---------------------------------------------------------------------------*/
141 /*****************************************************************************/
142 //  Description:    This function get sdram config pointer
143 //  Author:         nick.zhao
144 //  Note:           
145 /*****************************************************************************/
146 PUBLIC SDRAM_CFG_INFO_T_PTR SDRAM_GetCfg(void)
147 {
148   return (SDRAM_CFG_INFO_T_PTR)&s_sdram_config_info;
149 }
150
151 /*****************************************************************************/
152 //  Description:    This function get sdram timing parameter pointer
153 //  Author:         Liangwen.Zhen
154 //  Note:           
155 /*****************************************************************************/
156 PUBLIC SDRAM_TIMING_PARA_T_PTR SDRAM_GetTimingPara(void)
157 {
158         return (SDRAM_TIMING_PARA_T_PTR)&s_sdram_timing_param;
159 }
160
161 /*****************************************************************************/
162 //  Description:    This function can be defined by user if needed. It will be called
163 //                  before the SDRAM initialization.
164 //  Author:         nick.zhao
165 //  Note:           
166 /*****************************************************************************/
167 PUBLIC void Userdef_before_sdram_init(void)
168 {
169    return;
170 }
171 /*****************************************************************************/
172 //  Description:    This function can be defined by user if needed. It will be called
173 //                  after the SDRAM initialization.
174 //  Author:         nick.zhao
175 //  Note:           
176 /*****************************************************************************/
177 PUBLIC void Userdef_after_sdram_init(void)
178 {
179    return;
180 }
181
182 /**---------------------------------------------------------------------------*
183  **                         Compiler Flag                                     *
184  **---------------------------------------------------------------------------*/
185 #ifdef   __cplusplus
186     }
187
188 #endif
189
190