Lines Matching refs:spd
100 static void spd_debug(spd_eeprom_t *spd) in spd_debug() argument
102 printf ("\nDIMM type: %-18.18s\n", spd->mpart); in spd_debug()
103 printf ("SPD size: %d\n", spd->info_size); in spd_debug()
104 printf ("EEPROM size: %d\n", 1 << spd->chip_size); in spd_debug()
105 printf ("Memory type: %d\n", spd->mem_type); in spd_debug()
106 printf ("Row addr: %d\n", spd->nrow_addr); in spd_debug()
107 printf ("Column addr: %d\n", spd->ncol_addr); in spd_debug()
108 printf ("# of rows: %d\n", spd->nrows); in spd_debug()
109 printf ("Row density: %d\n", spd->row_dens); in spd_debug()
110 printf ("# of banks: %d\n", spd->nbanks); in spd_debug()
112 256 * spd->dataw_msb + spd->dataw_lsb); in spd_debug()
113 printf ("Chip width: %d\n", spd->primw); in spd_debug()
114 printf ("Refresh rate: %02X\n", spd->refresh); in spd_debug()
115 printf ("CAS latencies: %02X\n", spd->cas_lat); in spd_debug()
116 printf ("Write latencies: %02X\n", spd->write_lat); in spd_debug()
117 printf ("tRP: %d\n", spd->trp); in spd_debug()
118 printf ("tRCD: %d\n", spd->trcd); in spd_debug()
128 spd_eeprom_t spd; in spd_sdram() local
163 SPD_EEPROM_ADDR_LEN, (uchar *) &spd, sizeof(spd)); in spd_sdram()
165 spd_debug(&spd); in spd_sdram()
168 if (spd.mem_type != SPD_MEMTYPE_DDR && spd.mem_type != SPD_MEMTYPE_DDR2) { in spd_sdram()
169 debug("DDR: Module mem type is %02X\n", spd.mem_type); in spd_sdram()
174 if (spd.mem_type == SPD_MEMTYPE_DDR) { in spd_sdram()
175 n_ranks = spd.nrows; in spd_sdram()
177 n_ranks = (spd.nrows & 0x7) + 1; in spd_sdram()
186 if (spd.nrow_addr < 12 || spd.nrow_addr > 15) { in spd_sdram()
188 spd.nrow_addr); in spd_sdram()
193 if (spd.ncol_addr < 8 || spd.ncol_addr > 11) { in spd_sdram()
195 spd.ncol_addr); in spd_sdram()
203 if(spd.mem_type == SPD_MEMTYPE_DDR2) { in spd_sdram()
214 if (spd.mem_type == SPD_MEMTYPE_DDR2) { in spd_sdram()
220 ddr->csbnds[0].csbnds = (banksize(spd.row_dens) >> 24) - 1; in spd_sdram()
224 | ((spd.nbanks == 8 ? 1 : 0) << 14) in spd_sdram()
225 | ((spd.nrow_addr - 12) << 8) in spd_sdram()
226 | (spd.ncol_addr - 8) ); in spd_sdram()
232 ddr->csbnds[1].csbnds = ( (banksize(spd.row_dens) >> 8) in spd_sdram()
233 | ((banksize(spd.row_dens) >> 23) - 1) ); in spd_sdram()
237 | ((spd.nbanks == 8 ? 1 : 0) << 14) in spd_sdram()
238 | ((spd.nrow_addr - 12) << 8) in spd_sdram()
239 | (spd.ncol_addr - 8) ); in spd_sdram()
245 ddr->csbnds[2].csbnds = (banksize(spd.row_dens) >> 24) - 1; in spd_sdram()
249 | ((spd.nbanks == 8 ? 1 : 0) << 14) in spd_sdram()
250 | ((spd.nrow_addr - 12) << 8) in spd_sdram()
251 | (spd.ncol_addr - 8) ); in spd_sdram()
257 ddr->csbnds[3].csbnds = ( (banksize(spd.row_dens) >> 8) in spd_sdram()
258 | ((banksize(spd.row_dens) >> 23) - 1) ); in spd_sdram()
262 | ((spd.nbanks == 8 ? 1 : 0) << 14) in spd_sdram()
263 | ((spd.nrow_addr - 12) << 8) in spd_sdram()
264 | (spd.ncol_addr - 8) ); in spd_sdram()
273 memsize = n_ranks * banksize(spd.row_dens) / 0x100000; in spd_sdram()
306 caslat = __ilog2(spd.cas_lat); in spd_sdram()
307 if ((spd.mem_type == SPD_MEMTYPE_DDR) in spd_sdram()
309 printf("DDR I: Invalid SPD CAS Latency: 0x%x.\n", spd.cas_lat); in spd_sdram()
311 } else if (spd.mem_type == SPD_MEMTYPE_DDR2 in spd_sdram()
314 spd.cas_lat); in spd_sdram()
319 max_bus_clk = 1000 *10 / (((spd.clk_cycle & 0xF0) >> 4) * 10 in spd_sdram()
320 + (spd.clk_cycle & 0x0f)); in spd_sdram()
329 if (spd.cas_lat & 0x08) in spd_sdram()
349 if (spd.clk_cycle2 == 0x60) in spd_sdram()
356 if (spd.clk_cycle3 == 0x75) in spd_sdram()
358 else if (spd.clk_cycle2 == 0x75) in spd_sdram()
365 if (spd.clk_cycle3 == 0xa0) in spd_sdram()
367 else if (spd.clk_cycle2 == 0xa0) in spd_sdram()
380 if (spd.clk_cycle2 == 0x75) in spd_sdram()
387 if (spd.clk_cycle3 == 0xa0) in spd_sdram()
389 else if (spd.clk_cycle2 == 0xa0) in spd_sdram()
407 if (spd.clk_cycle2 == 0xa0) in spd_sdram()
430 if(PVR_MAJ(pvr) <= 1 && spd.mem_type == SPD_MEMTYPE_DDR){ in spd_sdram()
447 if (spd.mem_type == SPD_MEMTYPE_DDR) { in spd_sdram()
461 if (spd.mem_type == SPD_MEMTYPE_DDR2) { in spd_sdram()
482 if (spd.mem_type == SPD_MEMTYPE_DDR) { in spd_sdram()
486 twr_clk = picos_to_clk(spd.twr * 250); in spd_sdram()
487 twtr_clk = picos_to_clk(spd.twtr * 250); in spd_sdram()
497 if (spd.mem_type == SPD_MEMTYPE_DDR) { in spd_sdram()
498 trfc = spd.trfc * 1000; /* up to ps */ in spd_sdram()
511 trfc = (((spd.trctrfc_ext & 0x1) * 256) + spd.trfc) * 1000 in spd_sdram()
512 + byte40_table_ps[(spd.trctrfc_ext >> 1) & 0x7]; in spd_sdram()
519 trcd_clk = picos_to_clk(spd.trcd * 250) & 0x7; in spd_sdram()
531 (((picos_to_clk(spd.trp * 250) & 0x07) << 28 ) | /* PRETOACT */ in spd_sdram()
532 ((picos_to_clk(spd.tras * 1000) & 0x0f ) << 24 ) | /* ACTTOPRE */ in spd_sdram()
537 ((picos_to_clk(spd.trrd * 250) & 0x07) << 4) | /* ACTTOACT */ in spd_sdram()
549 if (spd.mem_type == SPD_MEMTYPE_DDR2 in spd_sdram()
574 if (spd.mem_type == SPD_MEMTYPE_DDR) { in spd_sdram()
591 trtp_clk = picos_to_clk(spd.trtp * 250); in spd_sdram()
605 if (spd.mem_type == SPD_MEMTYPE_DDR2) { in spd_sdram()
636 if (spd.dataw_lsb < 64) { in spd_sdram()
637 if (spd.mem_type == SPD_MEMTYPE_DDR) in spd_sdram()
648 if (spd.config == 0x02) in spd_sdram()
656 if (spd.mem_type == SPD_MEMTYPE_DDR) { in spd_sdram()
706 switch (spd.refresh) { in spd_sdram()
752 if (spd.mem_type == SPD_MEMTYPE_DDR2) { in spd_sdram()
785 if (spd.mem_type == SPD_MEMTYPE_DDR) in spd_sdram()
797 if (spd.mod_attr & 0x02) in spd_sdram()
801 if (spd.dataw_lsb < 64) { in spd_sdram()
802 if (spd.mem_type == SPD_MEMTYPE_DDR) in spd_sdram()
804 if (spd.mem_type == SPD_MEMTYPE_DDR2) in spd_sdram()
812 if (spd.config == 0x02) { in spd_sdram()