Lines Matching +full:ps +full:- +full:speed

1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright 2008-2012 Freescale Semiconductor, Inc.
8 * JEDEC standard No.21-C 4_01_02_11R18.pdf
27 * SPD byte4 - sdram density and banks
37 * SPD byte8 - module memory bus width
44 * SPD byte7 - module organiztion
61 if ((spd->density_banks & 0xf) < 7) in compute_ranksize()
62 nbit_sdram_cap_bsize = (spd->density_banks & 0xf) + 28; in compute_ranksize()
63 if ((spd->bus_width & 0x7) < 4) in compute_ranksize()
64 nbit_primary_bus_width = (spd->bus_width & 0x7) + 3; in compute_ranksize()
65 if ((spd->organization & 0x7) < 4) in compute_ranksize()
66 nbit_sdram_width = (spd->organization & 0x7) + 2; in compute_ranksize()
68 bsize = 1ULL << (nbit_sdram_cap_bsize - 3 in compute_ranksize()
69 + nbit_primary_bus_width - nbit_sdram_width); in compute_ranksize()
93 if (spd->mem_type) { in ddr_compute_dimm_parameters()
94 if (spd->mem_type != SPD_MEMTYPE_DDR3) { in ddr_compute_dimm_parameters()
114 memset(pdimm->mpart, 0, sizeof(pdimm->mpart)); in ddr_compute_dimm_parameters()
115 if ((spd->info_size_crc & 0xF) > 1) in ddr_compute_dimm_parameters()
116 memcpy(pdimm->mpart, spd->mpart, sizeof(pdimm->mpart) - 1); in ddr_compute_dimm_parameters()
119 pdimm->n_ranks = ((spd->organization >> 3) & 0x7) + 1; in ddr_compute_dimm_parameters()
120 pdimm->rank_density = compute_ranksize(spd); in ddr_compute_dimm_parameters()
121 pdimm->capacity = pdimm->n_ranks * pdimm->rank_density; in ddr_compute_dimm_parameters()
122 pdimm->primary_sdram_width = 1 << (3 + (spd->bus_width & 0x7)); in ddr_compute_dimm_parameters()
123 if ((spd->bus_width >> 3) & 0x3) in ddr_compute_dimm_parameters()
124 pdimm->ec_sdram_width = 8; in ddr_compute_dimm_parameters()
126 pdimm->ec_sdram_width = 0; in ddr_compute_dimm_parameters()
127 pdimm->data_width = pdimm->primary_sdram_width in ddr_compute_dimm_parameters()
128 + pdimm->ec_sdram_width; in ddr_compute_dimm_parameters()
129 pdimm->device_width = 1 << ((spd->organization & 0x7) + 2); in ddr_compute_dimm_parameters()
132 pdimm->mirrored_dimm = 0; in ddr_compute_dimm_parameters()
133 pdimm->registered_dimm = 0; in ddr_compute_dimm_parameters()
134 switch (spd->module_type & DDR3_SPD_MODULETYPE_MASK) { in ddr_compute_dimm_parameters()
139 pdimm->registered_dimm = 1; in ddr_compute_dimm_parameters()
141 u8 rcw = spd->mod_section.registered.rcw[i/2]; in ddr_compute_dimm_parameters()
142 pdimm->rcw[i] = (rcw >> 0) & 0x0F; in ddr_compute_dimm_parameters()
143 pdimm->rcw[i+1] = (rcw >> 4) & 0x0F; in ddr_compute_dimm_parameters()
158 if (spd->mod_section.unbuffered.addr_mapping & 0x1) in ddr_compute_dimm_parameters()
159 pdimm->mirrored_dimm = 1; in ddr_compute_dimm_parameters()
163 printf("unknown module_type 0x%02X\n", spd->module_type); in ddr_compute_dimm_parameters()
168 pdimm->n_row_addr = ((spd->addressing >> 3) & 0x7) + 12; in ddr_compute_dimm_parameters()
169 pdimm->n_col_addr = (spd->addressing & 0x7) + 9; in ddr_compute_dimm_parameters()
170 pdimm->n_banks_per_sdram_device = 8 << ((spd->density_banks >> 4) & 0x7); in ddr_compute_dimm_parameters()
177 if (pdimm->ec_sdram_width) in ddr_compute_dimm_parameters()
178 pdimm->edc_config = 0x02; in ddr_compute_dimm_parameters()
180 pdimm->edc_config = 0x00; in ddr_compute_dimm_parameters()
185 * BL8 -bit3, BC4 -bit2 in ddr_compute_dimm_parameters()
187 pdimm->burst_lengths_bitmask = 0x0c; in ddr_compute_dimm_parameters()
189 /* MTB - medium timebase in ddr_compute_dimm_parameters()
191 * We convert it to ps. in ddr_compute_dimm_parameters()
192 * eg: MTB = 0.125ns (125ps) in ddr_compute_dimm_parameters()
194 mtb_ps = (spd->mtb_dividend * 1000) /spd->mtb_divisor; in ddr_compute_dimm_parameters()
195 pdimm->mtb_ps = mtb_ps; in ddr_compute_dimm_parameters()
198 * FTB - fine timebase in ddr_compute_dimm_parameters()
199 * use 1/10th of ps as our unit to avoid floating point in ddr_compute_dimm_parameters()
200 * eg, 10 for 1ps, 25 for 2.5ps, 50 for 5ps in ddr_compute_dimm_parameters()
203 ((spd->ftb_div & 0xf0) >> 4) * 10 / (spd->ftb_div & 0x0f); in ddr_compute_dimm_parameters()
204 pdimm->ftb_10th_ps = ftb_10th_ps; in ddr_compute_dimm_parameters()
209 * tck_min=15 MTB (1.875ns) ->DDR3-1066 in ddr_compute_dimm_parameters()
210 * =12 MTB (1.5ns) ->DDR3-1333 in ddr_compute_dimm_parameters()
211 * =10 MTB (1.25ns) ->DDR3-1600 in ddr_compute_dimm_parameters()
213 pdimm->tckmin_x_ps = spd->tck_min * mtb_ps + in ddr_compute_dimm_parameters()
214 (spd->fine_tck_min * ftb_10th_ps) / 10; in ddr_compute_dimm_parameters()
218 * bit4 - CL4 in ddr_compute_dimm_parameters()
219 * bit5 - CL5 in ddr_compute_dimm_parameters()
220 * bit18 - CL18 in ddr_compute_dimm_parameters()
222 pdimm->caslat_x = ((spd->caslat_msb << 8) | spd->caslat_lsb) << 4; in ddr_compute_dimm_parameters()
227 * DDR3-800D 100 MTB (12.5ns) in ddr_compute_dimm_parameters()
228 * DDR3-1066F 105 MTB (13.125ns) in ddr_compute_dimm_parameters()
229 * DDR3-1333H 108 MTB (13.5ns) in ddr_compute_dimm_parameters()
230 * DDR3-1600H 90 MTB (11.25ns) in ddr_compute_dimm_parameters()
232 pdimm->taa_ps = spd->taa_min * mtb_ps + in ddr_compute_dimm_parameters()
233 (spd->fine_taa_min * ftb_10th_ps) / 10; in ddr_compute_dimm_parameters()
238 * twr_min = 120 MTB (15ns) -> all speed grades. in ddr_compute_dimm_parameters()
240 pdimm->twr_ps = spd->twr_min * mtb_ps; in ddr_compute_dimm_parameters()
245 * DDR3-800 100 MTB (12.5ns) in ddr_compute_dimm_parameters()
246 * DDR3-1066F 105 MTB (13.125ns) in ddr_compute_dimm_parameters()
247 * DDR3-1333H 108 MTB (13.5ns) in ddr_compute_dimm_parameters()
248 * DDR3-1600H 90 MTB (11.25) in ddr_compute_dimm_parameters()
250 pdimm->trcd_ps = spd->trcd_min * mtb_ps + in ddr_compute_dimm_parameters()
251 (spd->fine_trcd_min * ftb_10th_ps) / 10; in ddr_compute_dimm_parameters()
256 * DDR3-800(1KB page) 80 MTB (10ns) in ddr_compute_dimm_parameters()
257 * DDR3-1333(1KB page) 48 MTB (6ns) in ddr_compute_dimm_parameters()
259 pdimm->trrd_ps = spd->trrd_min * mtb_ps; in ddr_compute_dimm_parameters()
264 * DDR3-800D 100 MTB (12.5ns) in ddr_compute_dimm_parameters()
265 * DDR3-1066F 105 MTB (13.125ns) in ddr_compute_dimm_parameters()
266 * DDR3-1333H 108 MTB (13.5ns) in ddr_compute_dimm_parameters()
267 * DDR3-1600H 90 MTB (11.25ns) in ddr_compute_dimm_parameters()
269 pdimm->trp_ps = spd->trp_min * mtb_ps + in ddr_compute_dimm_parameters()
270 (spd->fine_trp_min * ftb_10th_ps) / 10; in ddr_compute_dimm_parameters()
274 * DDR3-800D 300 MTB (37.5ns) in ddr_compute_dimm_parameters()
275 * DDR3-1066F 300 MTB (37.5ns) in ddr_compute_dimm_parameters()
276 * DDR3-1333H 288 MTB (36ns) in ddr_compute_dimm_parameters()
277 * DDR3-1600H 280 MTB (35ns) in ddr_compute_dimm_parameters()
279 pdimm->tras_ps = (((spd->tras_trc_ext & 0xf) << 8) | spd->tras_min_lsb) in ddr_compute_dimm_parameters()
284 * DDR3-800D 400 MTB (50ns) in ddr_compute_dimm_parameters()
285 * DDR3-1066F 405 MTB (50.625ns) in ddr_compute_dimm_parameters()
286 * DDR3-1333H 396 MTB (49.5ns) in ddr_compute_dimm_parameters()
287 * DDR3-1600H 370 MTB (46.25ns) in ddr_compute_dimm_parameters()
289 pdimm->trc_ps = (((spd->tras_trc_ext & 0xf0) << 4) | spd->trc_min_lsb) in ddr_compute_dimm_parameters()
290 * mtb_ps + (spd->fine_trc_min * ftb_10th_ps) / 10; in ddr_compute_dimm_parameters()
298 pdimm->trfc_ps = ((spd->trfc_min_msb << 8) | spd->trfc_min_lsb) in ddr_compute_dimm_parameters()
302 * eg: twtr_min = 40 MTB (7.5ns) - all speed bins. in ddr_compute_dimm_parameters()
305 pdimm->twtr_ps = spd->twtr_min * mtb_ps; in ddr_compute_dimm_parameters()
309 * eg: trtp_min = 40 MTB (7.5ns) - all speed bins. in ddr_compute_dimm_parameters()
312 pdimm->trtp_ps = spd->trtp_min * mtb_ps; in ddr_compute_dimm_parameters()
319 pdimm->refresh_rate_ps = 7800000; in ddr_compute_dimm_parameters()
320 if ((spd->therm_ref_opt & 0x1) && !(spd->therm_ref_opt & 0x2)) { in ddr_compute_dimm_parameters()
321 pdimm->refresh_rate_ps = 3900000; in ddr_compute_dimm_parameters()
322 pdimm->extended_op_srt = 1; in ddr_compute_dimm_parameters()
328 * DDR3-800(1KB page) 320 MTB (40ns) in ddr_compute_dimm_parameters()
329 * DDR3-1066(1KB page) 300 MTB (37.5ns) in ddr_compute_dimm_parameters()
330 * DDR3-1333(1KB page) 240 MTB (30ns) in ddr_compute_dimm_parameters()
331 * DDR3-1600(1KB page) 240 MTB (30ns) in ddr_compute_dimm_parameters()
333 pdimm->tfaw_ps = (((spd->tfaw_msb & 0xf) << 8) | spd->tfaw_min) in ddr_compute_dimm_parameters()